package it.cursos.escolalivre.modelo;

import java.util.ArrayList;
import java.util.List;

public class Curso {
	
	
	// Metodo estatico aqui esta tambem limitando a um curso
	public static final Curso CURSO_WEBDEVELOP_JAVA = new Curso(1);
	private String nome;
	private String descricao;
	private int cargaHoraria;
	// sempre que tiver uma lista deve instancia para evitar erros
	private List<Turma> turmas = new ArrayList<Turma>();

	public Curso() {
	
	}
	
   //TODO Esse metodo nao deve ser criado na entidade 
	// Pois a entidade esta limitando a um curso especifico
	// esse metodo deve esta na regra de negocio
	private Curso(int curso) {
		switch (curso) {
		case 1:
			setNome("Curso Web Developer + Java");
			setDescricao("Capacitar Estudantes e Profissionais da área de informática a trabalharem na produção de sites e homepages dinâmicos utilizando Java Server Pages (JSP).");
			setCargaHoraria(120);
			break;
		default:
			break;
		}
	}

	// TODO Este construtor foi tirado o encapsulamento da forma que foi adicionado
	// Deve trabalhar nos set e nao diretamente no atributo
	public Curso(String nome, String descricao, int cargaHoraria) {
		super();
		this.nome = nome; // this.setNome(nome);
		this.descricao = descricao;
		this.cargaHoraria = cargaHoraria;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getDescricao() {
		return descricao;
	}

	@Override
	// TODO aqui tambem o mesmo caso do encapsulamento deve usar o get
	public String toString() {
		return String.format("nome=%s\ndescricao=%s\ncargaHoraria=%s\n", nome,
				descricao, cargaHoraria);
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public int getCargaHoraria() {
		return cargaHoraria;
	}

	public void setCargaHoraria(int cargaHoraria) {
		this.cargaHoraria = cargaHoraria;
	}

	public List<Turma> getTurmas() {
		return turmas;
	}

	public void setTurmas(List<Turma> turmas) {
		this.turmas = turmas;
	}

	public void addTurma(Turma turma){
		this.getTurmas().add(turma);
	}

}
